"""

目的通过字典键取值的形式提取数据
流程
1将网络上爬取下来的数据(str)像字典的字符串转换为真实的json(字典)类型数据
认识一个模块  json  模块
    作用 可以将满足条件的字符串或者字典转换为相反的数据类型
    str>dict     dict>str
2再进行数据提取
"""
import requests
import re
import json

# 数据包
url = "https://movie.douban.com/chart"

# 构建请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
    "X-Requested-With": "XMLHttpRequest",

}
# 发送请求
response = requests.get(url=url, headers=headers)

data = response.content.decode()
print((data))
# 1将网络上爬取下来的数据(str)像字典的字符串转换为真实的json(字典)类型数据
# 通过json模块里面的json.loads方法 把字符串转换为了json即字典对象
# ja=json.loads(data)
# print(type(jsondata))
# 2再进行数据提取
# 明白json的数据存储格式
#  {"subjects":[{},{},{},{}]}
# print(jsondata)
# for z in range(20):
#     titile=jsondata["subjects"][z]["title"]
#     rate=jsondata["subjects"][z]["rate"]
#     link=jsondata["subjects"][z]["cover"]
#     print(titile)
#     print(rate)
#     print(link)

# for i in jsondata['subjects']:
#     print(i["title"])
#     print(i["rate"])
#     print(i["cover"])
# 保存数据  json格式 数据
"""
文件结构也是 字典居多  键值对形式进行存储   
也是 {a:[{},{},{}]}形式保存 才不再文件内部报错 
考虑文件写入文字数据形式   
f f.write() str 类型 
我们清洗过后的封装的数据 是字典 
以及保存的形式也是字典 

转换数据类型 操作 
json模块里面的 dumps方法 进行转换 dict>str

"""
# with open("a.json","w",encoding="utf-8")as f:
#     for i in jsondata['subjects']:
#         # print(i["title"])
#         # print(i["rate"])
#         # print(i["cover"])
#
#         title=i["title"]
#         rate=i["rate"]
#         cover=i["cover"]
#         # 定义一个循环内的局部变量字典 存储每个电影的 数据
#         item={
#             "title":title,
#             "rate":rate,
#             "cover":cover
#         }
#         # write只能写入 字符串 再写入之前先进行数据转换
#         # 如果写入中文 而且不指定ensure_ascii=flase就会进行unicode编码
#         # indent=2 表示 提行数为我
#         str_data=json.dumps(item,ensure_ascii=False,indent=3)
#         f.write(str_data+",\n")

# 在进行json文件内容写入完毕后 文件显示格式不对 报红  如果需要更正
# 则按照以下文件书写格式排版
# {a:[{},{},{}]}




